package com.bbx.androidapi.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;

/**
 * @Description  判断Android手机的Rom是MIUI及获取MIUI版本
 * @Path com.bbx.androidapi.util.BaseUtils.java
 * @Author lbb
 * @Date 2015年11月25日 上午10:42:15
 * @Company 蓝海（福建）信息技术有限公司
 */
public class BaseUtils {

	public static String getSystemProperty(String propName) {  
		String line;  
		BufferedReader input = null;  
		try {  
			Process p = Runtime.getRuntime().exec("getprop " + propName);  
			input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);  
			line = input.readLine();  
			input.close();  
		} catch (IOException ex) {  
			return null;  
		} finally {  
			if (input != null) {  
				try {  
					input.close();  
				} catch (IOException e) {  
				}  
			}  
		}  
		return line;  
	}  
	public static boolean isMIUIRom(){  
		String property = BaseUtils.getSystemProperty("ro.miui.ui.version.name");  
		return !TextUtils.isEmpty(property);  
	} 
       
	/***********通用的调用“应用程序信息”的代码 start*****************/

	private static final String SCHEME = "package";
	/**
	 * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本)
	 */
	private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
	/**
	 * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2)
	 */
	private static final String APP_PKG_NAME_22 = "pkg";
	/**
	 * InstalledAppDetails所在包名
	 */
	private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
	/**
	 * InstalledAppDetails类名
	 */
	private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
	/**
	 * 调用系统InstalledAppDetails界面显示已安装应用程序的详细信息。 对于Android 2.3（Api Level
	 * 9）以上，使用SDK提供的接口； 2.3以下，使用非公开的接口（查看InstalledAppDetails源码）。
	 *
	 * @param context
	 *
	 * @param packageName
	 * 应用程序的包名
	 */
	public static void showInstalledAppDetails(Context context, String packageName) {
		Intent intent = new Intent();
		final int apiLevel = Build.VERSION.SDK_INT;
		if (apiLevel >= 9) { // 2.3（ApiLevel 9）以上，使用SDK提供的接口
			intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
			Uri uri = Uri.fromParts(SCHEME, packageName, null);
			intent.setData(uri);
		} else { // 2.3以下，使用非公开的接口（查看InstalledAppDetails源码）
			// 2.2和2.1中，InstalledAppDetails使用的APP_PKG_NAME不同。
			final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
					: APP_PKG_NAME_21);
			intent.setAction(Intent.ACTION_VIEW);
			intent.setClassName(APP_DETAILS_PACKAGE_NAME,
					APP_DETAILS_CLASS_NAME);
			intent.putExtra(appPkgName, packageName);
		}
		context.startActivity(intent);
	}
	/***********通用的调用“应用程序信息”的代码 end*****************/
}
